package com.dazhewan.utils;

import java.awt.*;
import java.awt.image.BufferedImage;

/**
 * @author zhengxuexue
 * @date 2023/12/15 16:44
 * @description 跟屏幕相关的工具类
 */
public class ScreenUtil {
    /**
     * 根据传入的位置参数截取屏幕，并返回文件流
     *
     * @param positionX 定位点的x坐标
     * @param positionY 定位点的y坐标
     * @author zhengdanyu
     * @date 2023/12/15 16:44
     */
    public static BufferedImage screenShot(int positionX, int positionY, int width, int height) {
        if (width < 0 || height < 0) {
            return null;
        }

        //Java标准API中有个Robot类，该类可以实现屏幕截图，模拟鼠标键盘操作这些功能。这里只展示其屏幕截图
        Robot robot = null;
        try {
            robot = new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }
        return robot.createScreenCapture(new Rectangle(positionX, positionY, width, height));
    }


    /**
     * 获取整个屏幕的截屏并返回截图的文件流
     * Java的Toolkit类主要用于获取屏幕尺寸、颜色等系统相关信息，以及处理图像、窗口等操作。以下是一些常用的方法：
     * 1. getScreenSize()：获取屏幕尺寸（宽度和高度）。
     * 6. getSystemEventQueue()：获取系统事件队列。
     * 7. beep()：发出蜂鸣声。
     * 8. setDynamicLayout(Component comp, boolean isDynamic)：设置组件的布局是否动态。
     *
     * @author zhengdanyu
     * @date 2023/12/15 17:32
     */
    public static BufferedImage cutAllScreen() {
        //得到Toolkit对象(实例化)
        Toolkit tk = Toolkit.getDefaultToolkit();
        //得到屏幕的尺寸
        Dimension screen = tk.getScreenSize();
        BufferedImage image = screenShot(0, 0, (int) screen.getWidth(), (int) screen.getHeight());
        return image;
    }

}
